import axios from 'axios'

const instance = axios.create({
	//baseURL: 'https://ysggrd.cciis.cn/data_center/',
	baseURL: "/data_center", //data_center是后台的模块名  要和后台的模块名保持一致
	timeout: 600000,
})

// 请求拦截
instance.interceptors.request.use(config => {
	return config;
}, error => {
	return Promise.reject(error);
})

// 响应拦截
instance.interceptors.response.use(response => {
	return response;
}, error => {
	return Promise.reject(error);
})


import md5 from 'js-md5';

function getSign(data) {
	let key = 'c4ca4238a0b923820dcc509a6f75849b';
	let secret = '28c8edde3d61a0411511d3b1866f0636';
	data.key = key;
	data.timestamp = Math.floor(Date.now() / 1000);
	// 对对象的键按字母顺序排序
	const sortedKeys = Object.keys(data).sort();
	// 生成URL形式的参数字符串
	const params = sortedKeys.map(key => `${key}=${data[key]}`).join('&');
	// 生成sign
	return md5(params + secret);
}


/*
 *封装get方法
 *@param{String} url [请求地址]
 *@param{Object} params 请求参数
 */
export function Get(url, params) {
	params.sign = getSign(params);
	return new Promise((resolve, reject) => {
		instance.get(url, {
			params: params
		}).then((res) => {
			resolve(res.data);
		}).catch((error) => {
			reject(error.data);
		})
	})
}


/**
 *封装post方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Post(url, params) {
	params.sign = getSign(params);
	return new Promise((resolve, reject) => {
		instance.post(url, params).then((res) => {
			resolve(res.data);
		}).catch((error) => {
			reject(error.data);
		})
	})
}


/**
 *封装put方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Put(url, params) {
	params.sign = getSign(params);
	return new Promise((resolve, reject) => {
		instance.put(url, params).then((res) => {
			resolve(res.data);
		}).catch((error) => {
			reject(error.data);
		})
	})
}

/**
 *封装patch方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Patch(url, params) {
	params.sign = getSign(params);
	return new Promise((resolve, reject) => {
		instance.put(url, params).then((res) => {
			resolve(res.data);
		}).catch((error) => {
			reject(error.data);
		})
	})
}

/**
 *封装delete方法
 *@param{String} url [请求地址]
 *@param{Object} params [请求参数]
 */
export function Delete(url, params) {
	params.sign = getSign(params);
	return new Promise((resolve, reject) => {
		instance.delete(url, {
			params: params
		}).then((res) => {
			resolve(res.data);
		}).catch((error) => {
			reject(error.data);
		})
	})
}
